﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cesave.Domain.PermisosModule.Contracts.Afianzadoras;
using Cesave.Infrastructure.CrossCutting.IoC;
using Cesave.Infrastructure.CrossCutting.Logging;
using Cesave.DistributedServices.Core.ErrorHandlers;
using System.ServiceModel;

namespace Cesave.DistributedServices.PermisosModule
{
    public partial class PermisosModuleService       
    {

        public void AddAfianzadora(Domain.PermisosModule.Entities.Afianzadora afianzadora)
        {
            try
            {
                IAfianzadoraService afianzadoraservice = IoCFactory.Resolve<IAfianzadoraService>();
                afianzadoraservice.AddAfianzadora(afianzadora);
            }
            catch (Exception ex)
            {
                ITraceManager tracemanager = IoCFactory.Resolve<ITraceManager>();
                tracemanager.TraceError(ex.Message);
                ServiceError details = ServiceError.Factory(ex.Message);
                throw new FaultException<ServiceError>(details);
            }
        }

        public void ChangeAfianzadora(Domain.PermisosModule.Entities.Afianzadora afianzadora)
        {
            try
            {
                IAfianzadoraService afianzadoraservice = IoCFactory.Resolve<IAfianzadoraService>();
                afianzadoraservice.ChangeAfianzadora(afianzadora);
            }
            catch (Exception ex)
            {
                ITraceManager tracemanager = IoCFactory.Resolve<ITraceManager>();
                tracemanager.TraceError(ex.Message);
                ServiceError details = ServiceError.Factory(ex.Message);
                throw new FaultException<ServiceError>(details);
            }
        }

        public List<Domain.PermisosModule.Entities.Afianzadora> findAfianzadorasByJunta(Guid juntaGuid)
        {
            try
            {
                IAfianzadoraService afianzadoraservice = IoCFactory.Resolve<IAfianzadoraService>();
                return afianzadoraservice.findAfianzadorasByJunta(juntaGuid);
            }
            catch (Exception ex)
            {
                ITraceManager tracemanager = IoCFactory.Resolve<ITraceManager>();
                tracemanager.TraceError(ex.Message);
                ServiceError details = ServiceError.Factory(ex.Message);
                throw new FaultException<ServiceError>(details);
            }
        }
    }
}
